<?php


namespace App\Services\Applet\Other;


use App\Helpers\LogHelper;
use App\Helpers\Redis\RedisHelper;

/**
 * 短信服务类
 *
 * Class SmsService
 *
 * @package App\Services\Other
 */
class SmsService extends BaseOtherService
{
    // 验证码类型
    const CODE_TYPE_CLIENT_LOGIN = 1000;    // 登录
    const CODE_TYPE_LOGOFF       = 1;       // 注销
    const CODE_TYPE_PAY_PWD      = 2;       // 支付密码

    // 登录态：发送验证码的类型
    const CODE_TYPE = [
        self::CODE_TYPE_LOGOFF,
        self::CODE_TYPE_PAY_PWD,
    ];

    /**
     * 发送-短信消息, 支持小批量的群发消息
     *
     * @tips 消息类型的，在异步发送的时候写表：getSmsSendRecordsModel
     *
     * @param array $mobiles 手机号
     * @param array $params 参数数据 参数顺序要保证和模板替换占位符一致（template，在脚本的逻辑里会的unset掉的）
     * @var         $params  string          template    短信模板关键词
     * @var         $params  string                      短信内容：替换参数1
     * @var         $params  string                      短信内容：替换参数2
     * @var         $params  string                      短信内容：替换参数...
     */
    public function send(array $mobiles, array $params)
    {
//        $this->getSmsLibrary()->sendMsg($mobiles, $params);
    }

    /**
     * 发送短信验证码
     *
     * @tips 验证码的时效要求比较高，需单独处理
     *
     * @param string $mobile 手机号
     * @param string $code 短信验证码
     * @param bool $isSync 是否同步
     */
    public function sendCode(int $type, string $mobile, string $code, bool $isSync = false)
    {
        LogHelper::info('code', [$mobile, $code, $isSync]);
        RedisHelper::push(RedisHelper::LIST_SMS_SEND_VERIFY_CODE, [
            'phone' => $mobile,
            'code' => $code,
        ]);
    }
}
